この章では、次の項目について説明します。
TimesTenでは2種類のXLAがサポートされています。永続XLA(ttXlaPersistOpen関数で接続している場合)と非永続XLA(ttXlaOpenTimesTen関数で接続している場合)です。ほぼすべての点で、永続XLAの方が非永続XLAよりも優れています。
レプリケーションと同様に、XLAには注意深い監視が必要です。
各XLA接続では、トランザクション・ログにブックマークが保持されます。これらのXLAプロセスの1つが停止すると、そのブックマークがログ・ファイルに常駐し、ブックマークが進行されるか削除されるまで、そのログ・ファイルおよび今後の全ログ・ファイルはチェックポイント処理によって削除できません。
したがって、停止した永続XLAプロセスによってログ・ファイルが蓄積され、ディスクが一杯になり、追加のログ・ファイルが書き込めずにデータ・ストアの障害を引き起こす原因となることがあります。一杯になったディスクのリカバリの詳細は、「一杯になったディスクのリカバリ」を参照してください。
TTClassesでは、ttXlaAdminという便利なコマンドライン・ユーティリティが提供されています。これによって、データ・ストア内のXLAブックマークのリスト(データ・ストアごとに保持されているログ・ファイルの数を示します)が作成され、必要に応じてユーザーはこれを削除できます。TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。
特定のXLAリーダーで読み取られたもの(および読み取られなかったもの)に対して、トランザクション・ログにブックマークを保持することによって、XLAは永続的になります。このブックマークは、1つのXLAリーダーが複数のXLAレコードのセットを受け取る際には、進行されないことに注意してください。これは、XLAリーダーがこれらのレコードを処理する前に停止した場合に、それに対処するための意図的な動作です。
ブックマークを進行させるためには、XLAリーダーがXLAレコードのバッチを明示的に確認する必要があります。これは、XLAのttXlaAcknowledge関数で実行します。ユーザーのプログラムでこの関数を定期的にコールしない場合は、XLAブックマークを進行できず、前述の項目で説明したディスク領域不足の問題が発生します。ただし、次のXLAパフォーマンスに関する項で説明するように、この関数は頻繁にコールしないでください。
TTClassesメソッドのTTXlaPersistConnection::ackUpdates()は、ttXlaAcknowledgeのラッパーです。ackUpdatesを使用したデモについては、TTClassesのサンプル・プログラムxlaSimpleを参照してください。TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。
XLAは、データ・ストアにおける1つまたは複数の表について、その変更の通知を受信する柔軟性に優れた強力なフレームワークです。ただし、次の項目を考慮しない場合、XLAアプリケーションのパフォーマンスが低下する可能性があります。
XLAのttXlaAcknowledge関数はすべてのXLAアプリケーションの基礎となる部分です。これによって、XLAブックマークが進行され、トランザクション・ログがチェックポイントによってパージされます。
ただし、ttXlaAcknowledgeは比較的多くのリソースを消費します。したがって、ttXlaNextUpdate(またはttXlaNextUpdateWait)によってXLAレコードのバッチが返されるごとに、コールしないでください。
この関数をコールする頻度は、アプリケーションのビジネス・ロジックとリカバリ要件およびパフォーマンス要件とのバランスによって異なります。比較的スループット要件が低いアプリケーションの場合は、ttXlaNextUpdate[Wait]がレコードを10回返すたびにttXlaAcknowledgeをコールしても問題ありません。ただし、最大のスループットが必要な場合は、これらの2つの関数は1:100の割合で実行することをお薦めします。